【CodeDeploy】Lambdaデプロイ設定の違いまとめ

【CodeDeploy】Lambdaデプロイ設定の違いまとめ

Clock Icon2022.01.17

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、AWS事業本部コンサルティング部のたかくに(@takakuni_)です。

DevOps Professional試験勉強中でつまずいたLambdaのデプロイ設定についてまとめてみました。

はじめに

以下の記事をもとに記載していきます。

Deployment configuration

Deployment configurations on an AWS Lambda compute platform

さっそくまとめ

Lambda関数の新バージョントラフィック移行率をデフォルトのデプロイ設定ごとに表にまとめてみました。

新バージョントラフィック移行の流れ(30分間)

※分数は、「後」とする。例:5分→5分後

名前 直後 5分 10分 15分 20分 25分 30分
CodeDeployDefault.LambdaCanary10Percent5Minutes 10% 100% 100% 100% 100% 100% 100%
CodeDeployDefault.LambdaCanary10Percent10Minutes 10% 10% 100% 100% 100% 100% 100%
CodeDeployDefault.LambdaCanary10Percent15Minutes 10% 10% 10% 100% 100% 100% 100%
CodeDeployDefault.LambdaCanary10Percent30Minutes 10% 10% 10% 10% 10% 10% 100%
CodeDeployDefault.LambdaLinear10PercentEvery1Minute 10% 60% 100% 100% 100% 100% 100%
CodeDeployDefault.LambdaLinear10PercentEvery2Minutes 10% 30% 70% 100% 100% 100% 100%
CodeDeployDefault.LambdaLinear10PercentEvery3Minutes 10% 20% 40% 60% 70% 90% 100%
CodeDeployDefault.LambdaLinear10PercentEvery10Minutes 10% 10% 20% 20% 30% 30% 40%
CodeDeployDefault.LambdaAllAtOnce 100% 100% 100% 100% 100% 100% 100%

Canaryデプロイ設定とは

公式ドキュメント

Canary: トラフィックは 2 回の増分で移行されます。残りのトラフィックが 2 回目の増分で移行される前に、最初の増分および間隔で更新された Lambda 関数のバージョンに移行されるトラフィックの割合 (%) を分単位で指定する、事前定義された Canary オプションから選択できます。

  • パーセントと時間を指定する方式
  • 指定したパーセントは新バージョンへのトラフィックの割合を指し、時間では次回デプロイまでの時間を指定する
  • 指定した時間内でエラーが起こらなければ、全てのトラフィックを新バージョンへ向ける方式

Linearデプロイ設定とは

公式ドキュメント

Linear (リニア): トラフィックは毎回同じ間隔 (分) の等しい増分で移行されます。増分ごとに移行するトラフィックの割合 (%) と、増分間の間隔 (分) を指定する、事前定義済み線形オプションから選択できます。

  • 指定したパーセントと時間で段階的に新バージョンへトラフィックを移行する方式

All-at-onceデプロイ設定とは

公式ドキュメント

オール・アット・ワンス: すべてのトラフィックは元の Lambda 関数から、更新された Lambda 関数のバージョンに同時に移行されます。

  • デプロイ後、新バージョンへトラフィックを100%移行する方式

なぜつまずいたのか

今回の試験勉強中にCanaryデプロイ設定を初めて知り、指定した時間後にトラフィックが新バージョンへ完全移行するニュアンスに違和感がありました。

個人的には「指定時間経過後に本当に一気に100%まで移行して大丈夫なの!?」というソワソワしましたが、認識齟齬ありませんでした。

最後に

試験勉強中の方や、実務で使われる方の参考になれば幸いです。

以上、AWS事業本部コンサルティング部のたかくに(@takakuni_)でした!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.